上一篇我們簡單的介紹了 AutoMapper 的方法,今天我們要進一步使用 Profile 將對應關係集中,以及.NET Core 中依賴注入(DI)AutoMapper。
依照我們的架構 NetCoreDemo.Utility 會有一個 Mappings 資料夾專門放 AutoMapper 對應的設定。
接著我們來建立一個繼承 AutoMapper 的 Profile 的 Mapping。
namespace NetCoreDemo.Utility.Mappings
{
    public class UserMapping : Profile
    {
        public UserMapping()
        {
            CreateMap<UserDTO, UserViewModel>();
        }
    }
}
接者我們可以使用 AddProfile 和剛剛建立的 Profile 來直接 Mapping
public IEnumerable<UserViewModel> GetUser(UserDTO m)
{
    var data = GetUserByAccName(m);
    var config = new MapperConfiguration(cfg => cfg.AddProfile<UserViewModel>());
    var mapper = config.CreateMapper();
    var result = mapper.Map<IEnumerable<UserViewModel>>(data);
    return result;
}
NuGet 安裝 AutoMapper.Extensions.Microsoft.DependencyInjection
Program.cs
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //找到全部Profile
註冊完成後,我們就能使用注入的方式來取得 Mapper,程式最終簡化如下
private readonly IMapper _mapper;
public UserService(IMapper mapper)
{
    _mapper = mapper;
}
public IEnumerable<UserViewModel> GetUser(UserDTO m)
{
    var data = GetUserByAccName(m);
    var result = _mapper.Map<IEnumerable<UserViewModel>>(data);
    return result;
}
是不是覺得變得超級簡潔!!再次推推AutoMapper
那今天就到這邊囉,大家明天見!